package cn.qg.search.service.token;


import cn.qg.beans.pojo.QgUser;

public interface TokenService {

    /**
     * Token过期时间 单位：s
     */
    int TOKEN_EXPIRE_TIME = 7200;
    /** Token前缀 */
    String TOKEN_PREFIX = "token:";
    /** Token置换保护时间 s */
    int TOKEN_REPLACE_PROTECTION_TIME = 120;
    // int TOKEN_REPLACE_PROTECTION_TIME = 6900;
    /** 旧Token保护 s */
    int TOKEN_OLD_PROTECTION_TIME = 120;

    /**
     * 置换token
     * @param oldToken
     * @return
     */
    String replaceToken(String oldToken) throws Exception;

    /**
     * 删除Token
     * @param token
     */
    void deleteToken(String token)throws Exception;

    /**
     * 校验Token
     * @param token
     * @return
     */
    boolean validateToken(String token)throws Exception;

    /**
     * 保存Token到Redis
     * @param token
     * @param
     */
    void saveToken(String token, QgUser qgUse) throws Exception;

    /**
     * 生成Token
     * 规则：
     * token:PC/MOBILE-加密的UserCode-UserId-时间戳-6位随机数
     *
     * @param
     * @return
     */
    String generateToken(QgUser qgUse);
}
